{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "efe8f603c3a1ea67",
   "metadata": {},
   "source": [
    "<a href=\"https://colab.research.google.com/github/run-llama/llama_index/blob/main/docs/examples/embeddings/ollama_embedding.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7d05ee2e5015619a",
   "metadata": {},
   "source": [
    "# Ollama Embeddings"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7ec795e92b745944",
   "metadata": {},
   "source": [
    "If you're opening this Notebook on colab, you will probably need to install LlamaIndex 🦙."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "429b804c",
   "metadata": {},
   "outputs": [],
   "source": [
    "%pip install llama-index-embeddings-ollama"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "a45593c62b5a6518",
   "metadata": {},
   "outputs": [],
   "source": [
    "from llama_index.embeddings.ollama import OllamaEmbedding\n",
    "\n",
    "ollama_embedding = OllamaEmbedding(\n",
    "    model_name=\"embeddinggemma\",\n",
    "    base_url=\"http://localhost:11434\",\n",
    "    # Can optionally pass additional kwargs to ollama\n",
    "    # ollama_additional_kwargs={\"mirostat\": 0},\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b3066acb",
   "metadata": {},
   "source": [
    "You can generate embeddings using one of several methods:\n",
    "\n",
    "- `get_text_embedding_batch`\n",
    "- `get_text_embedding`\n",
    "- `get_query_embedding`\n",
    "\n",
    "As well as async versions:\n",
    "- `aget_text_embedding_batch`\n",
    "- `aget_text_embedding`\n",
    "- `aget_query_embedding`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "7e1c8ff8",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Generating embeddings: 100%|██████████| 2/2 [00:00<00:00,  3.66it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Got vectors of length 768\n",
      "[-0.19284482, -0.0048683924, 0.011490762, -0.035292886, 0.0018508184, 0.013227936, -0.045588765, 0.027076142, 0.03387062, -0.030585105]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\n"
     ]
    }
   ],
   "source": [
    "embeddings = ollama_embedding.get_text_embedding_batch(\n",
    "    [\"This is a passage!\", \"This is another passage\"], show_progress=True\n",
    ")\n",
    "print(f\"Got vectors of length {len(embeddings[0])}\")\n",
    "print(embeddings[0][:10])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "d84bc196",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Got vectors of length 768\n",
      "[-0.18305846, -0.009758809, 0.022796445, -0.038445882, -0.00894579, 0.023117013, -0.05166001, 0.037556227, 0.03699912, -0.017603736]\n"
     ]
    }
   ],
   "source": [
    "embedding = ollama_embedding.get_text_embedding(\n",
    "    \"This is a piece of text!\",\n",
    ")\n",
    "print(f\"Got vectors of length {len(embedding)}\")\n",
    "print(embedding[:10])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "1ac79a2f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Got vectors of length 768\n",
      "[-0.19484262, -0.014648143, 0.02743501, -0.015000358, 0.0027351314, 0.019096522, -0.071097225, 0.033618074, 0.05173764, -0.024861954]\n"
     ]
    }
   ],
   "source": [
    "embedding = ollama_embedding.get_query_embedding(\n",
    "    \"This is a query!\",\n",
    ")\n",
    "print(f\"Got vectors of length {len(embedding)}\")\n",
    "print(embedding[:10])"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": ".venv",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
